﻿#include <stdio.h>

//修改结构体默认对齐数
//#pragma pack(1)
//struct S2
//{
//	char c1;
//	char c2;
//	int i;
//};
//
//
//int main()
//{
//	printf("%zd", sizeof(struct S2));
//	return 0;
//}

//结构体传参使用指针较好
//struct S
//{
//	int arr[1000];
//	char a;
//};
//
//void fun(struct S tmp) //又创建了临时的4000B空间
//{
//	//...
//}
////
//void fun2(const struct S* ps) //指针变量大小4/8B
//{
//	//...
//}
//
//int main()
//{
//	struct S s1 = { { 0 }, '0' };
//	fun(s1);
//	fun2(&s1);
//
//	return 0;
//}

//位段
//struct S
//{
//	int a : 2;
//	int b : 5;
//	int c : 10;
//	int d : 30;
//};
//struct S
//{
//	char a : 3;
//	char b : 4;
//	char c : 5;
//	char d : 4;
//};
//
//int main()
//{
//	struct S s = { 0 };
//	s.a = 10;
//	s.b = 12;
//	s.c = 3;
//	s.d = 4;
//
//	int a = 0;
//	scanf("%d", &a);
//	s.a = a;
//	return 0;
//}

//联合体
//union u
//{
//	int a;
//	char i;
//};
//
//int main()
//{
//	union u u1 = { 0 };
//	u1.a = 0x11223344;
//	u1.i = 0;
//
//	return 0;
//}

//联合体应用-->省空间
// 
//struct gift_list
//{
//	//公共属性
//	int stock_number;//库存量
//	double price; //定价
//	int item_type;//商品类型
//
//	//特殊属性
//	char title[20];//书名
//	char author[20];//作者
//	int num_pages;//⻚数
//
//	char design[30];//设计
//	int colors;//颜⾊
//	int sizes;//尺⼨
//};

//struct gift_list
//{
//	int stock_number;//库存量
//	double price; //定价
//	int item_type;//商品类型
//
//	union {
//		struct
//		{
//			char title[20];//书名
//			char author[20];//作者
//			int num_pages;//⻚数
//		}book;
//		struct
//		{
//			char design[30];//设计
//		}mug;
//		struct
//		{
//			char design[30];//设计
//			int colors;//颜⾊
//			int sizes;//尺⼨
//		}shirt;
//	}item;
//};
//
//int main()
//{
//	struct gift_list g;
//	g.item.book;
//	g.item.mug;
//	g.item.shirt;
//
//	return 0;
//}

//使用联合体判断小端大端
//int check_system()
//{
//	union u
//	{
//		int a;
//		char i;
//	};
//	union u u1 = { 0 };
//	u1.a = 1;
//	return u1.i;
//}
//int main()
//{
//	if (check_system() == 1)
//	{
//		printf("小端");
//	}
//	else
//	{
//		printf("大端");
//	}
//	return 0;
//}

